package com.wei.czz.common.property;

import com.wei.czz.common.tool.BaseEntity;
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * Created by IntelliJ IDEA.
 *
 * @author wyw
 * date: 2025-03-22 14:14:30
 * className: MinioProperty
 * version: 1.0
 * description:
 */
@Getter
@Setter
@Component
@ConfigurationProperties(prefix = "minio")
@Validated
public class MinioProperty extends BaseEntity {

    /**
     * 服务地址
     */
    @NotBlank(message = "服务地址不能为空")
    private String endpoint;

    /**
     * 访问密钥
     */
    @NotBlank(message = "访问密钥不能为空")
    private String accessKey;

    /**
     * 密钥
     */
    @NotBlank(message = "密钥不能为空")
    private String secretKey;

    /**
     * 桶名称
     */
    @NotBlank(message = "桶名称不能为空")
    private String bucketName;

    /**
     * 文件压缩合并配置
     */
    @NotNull(message = "文件压缩合并配置不能为空")
    @Valid
    private Zip zip;

    @Getter
    @Setter
    public static class Zip extends BaseEntity {

        /**
         * minio文件压缩合并，单次最大压缩文件数量
         */
        @NotNull(message = "minio文件压缩合并，单次最大压缩文件数量不能为空")
        private Integer maxSize;

        /**
         * minio文件压缩合并，单次最大压缩原始文件大小（单位：字节）
         */
        @NotNull(message = "minio文件压缩合并，单次最大压缩原始文件大小不能为空")
        private Long maxOriginalSize;

        /**
         * minio文件压缩合并，临时文件存放路径
         */
        @NotBlank(message = "minio文件压缩合并，临时文件存放路径不能为空")
        private String tempPath;

    }

}
